/**
 * 
 */
package compilador.analizadorSintactico.categoriasSintacticas;

import java.util.ArrayList;

import javax.swing.tree.DefaultMutableTreeNode;

/**
 * @author Nolberto Castellanos Rodriguez
 * @author Yurani Alejandra Salamanca Lotero
 *
 * Clase que representa los parametros que tiene una funcion o metodo
 */
public class ListaParametros {

//	-------------------------------------------------------------------------------------------------
//	ATRIBUTOS
//	-------------------------------------------------------------------------------------------------

	/**
	 *  Atributo que contiene la lista de parametro
	 */
	private ArrayList<ListaParametro> listaParametro;

	
//	-------------------------------------------------------------------------------------------------
//	CONSTRUCTOR
//	-------------------------------------------------------------------------------------------------

	
	/**
	 * Constructor que permite crear la Lista de Parametros
	 * @param listaParametro. Lista de parametros
	 */
	public ListaParametros(ArrayList<ListaParametro> listaParametro) {
		super();
		this.listaParametro = listaParametro;
	}
	
//	-------------------------------------------------------------------------------------------------
//	METODOS
//	-------------------------------------------------------------------------------------------------	
	
	/**
	 * Metodo que permite agregar hojas al nodo de la clase
	 * @return el nodo de la clase con sus hojas
	 */
	public DefaultMutableTreeNode getArbolVisual(){
		DefaultMutableTreeNode miRaiz =  new  DefaultMutableTreeNode("Lista de Parametros");
		
		for (ListaParametro parametro : listaParametro) 
			miRaiz.add(parametro.getArbolVisual());
		return miRaiz;
	}

	
//	-------------------------------------------------------------------------------------------------
//	Getters and Setters
//	-------------------------------------------------------------------------------------------------


	/**
	 * Metodo que nos retorna el valor de listaParametro
	 * @return  listaParametro. Valor retornado
	 */
	public ArrayList<ListaParametro> getListaParametro() {
		return listaParametro;
	}


	/**
	 * Metodo que permite asignar el valor de listaParametro
	 * @param listaParametro. Valor a asignar listaParametro
	 */
	public void setListaParametro(ArrayList<ListaParametro> listaParametro) {
		this.listaParametro = listaParametro;
	}

	/**
	 * @return
	 */
	public String getJavaCode() {
		String retornable = "";
		if (listaParametro != null) {
			for (int i = 0; i < listaParametro.size(); i++) {
				
				if(i>0)
					retornable += ", ";
				
				retornable+= listaParametro.get(i).getJavaCode();
			}
		}
		
		return retornable;
	}
	
	
	
}
